package com.lhn;

import com.lhn.dao.AccountDao;
import com.lhn.domain.Account;
import com.lhn.service.AccountService;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author lhn
 * @date 2024-08-19 18:47
 */
public class App14 {
    /**
     * 主函数，程序的入口点
     * 初始化MyBatis的SqlSessionFactory，开启SQL会话，并通过映射器访问数据库获取账户信息
     *
     * @param args 命令行参数
     * @throws IOException 如果无法读取配置文件，则会抛出此异常
     */
    public static void main(String[] args) throws IOException {
        // 创建SqlSessionFactoryBuilder对象，用于构建SqlSessionFactory
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 通过Resources工具获取SqlMapConfig.xml的输入流
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 使用输入流构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        // 打开一个新的SQL会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 通过SQL会话获取AccountDao映射器
        AccountDao accountDao = sqlSession.getMapper(AccountDao.class);
        // 使用AccountDao映射器根据ID查找账户信息
        List<Account> accounts = accountDao.findAll();
        // 打印查询到的账户信息
        System.out.println("ac is " + accounts);

        //关闭资源
        sqlSession.close();
    }
}
